/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import bancoDados.ConexaoDB;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;


/**
 *
 * @author tecnico
 */
public class Cliente {
    private int codigo;
    private String nome;
    private String telefone;
    private String endereco;
    private String bairro;
    private String numero;
    private String complemento;

    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }
    private boolean ativo;
     
    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }
    
    
    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }


    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public void salvar(){
        String sql;
        
        sql = "INSERT INTO cliente (nome, telefone, endereco, numero,bairro,complemento) ";
        sql = sql + "VALUES ('" + this.nome + "','" + this.telefone + "','" + this.endereco + "','" + this.numero + "','" + this.bairro + "','"+this.complemento+"');";
        
        ConexaoDB con = new ConexaoDB();
        con.executaComando(sql);
    }
    
    
    
     public void alterar(){
        String sql;
        
        sql = "UPDATE cliente SET nome='" + this.nome + "',";
        sql = sql + "Telefone='" + this.telefone+"',";
        sql = sql + "Endereco='" + this.endereco+"',";
        sql = sql + "Numero='" + this.numero+"',";
        sql = sql + "Complemento='" + this.complemento + "',";
        sql = sql + "Bairro='" + this.bairro + "'";
        sql = sql + " WHERE codigo=" + this.codigo + ";";
        
        ConexaoDB con = new ConexaoDB();
        con.executaComando(sql);
    }
    
    
    public ResultSet listarClientes(){
        String sql;
        
        sql = "SELECT * FROM Cliente;";

        ConexaoDB con = new ConexaoDB();
        return con.executaQuery(sql);
    }
    
     public ArrayList<Cliente> getAll() {         
        try {  
            ArrayList<Cliente> listAll = null;  
            Cliente cliente = null;              
            ConexaoDB con = new ConexaoDB();
            ResultSet rs;

            rs = con.executaQuery("SELECT * FROM cliente;");

            if (rs.next()) { //percorrendo os registros encontrados  
                listAll = new ArrayList<Cliente>();  
                do {                      
                    cliente = new Cliente();//instanciando objeto                                       

            /*setando atributos de acordo com os seus tipos primitivos*/     
                    cliente.setNome(rs.getString("nome"));  
                    cliente.setTelefone(rs.getString("telefone"));  
                    cliente.setEndereco(rs.getString("endereco"));  
                    cliente.setCodigo(rs.getInt("codigo"));  
                    cliente.setBairro(rs.getString("bairro"));
                    cliente.setNumero(rs.getString("numero"));
                    cliente.setComplemento(rs.getString("complemento"));
                    
                    listAll.add(cliente); //add a lista de objetos encontrados e setados  
                } while (rs.next());  
            }  
            rs.close();  
            return listAll; //retornando a lista de registros  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }
    
     //retorna um cliente com o numero de telefone enviado por parametro
     public Cliente buscaClienteTelefone(String telefone){
        String sql = "select * from cliente where telefone = '" +telefone +"';";
        return this.buscaCliente(sql);
     }            

     //retorna um cliente com o codigo enviado por parametro
     public Cliente buscaClienteCodigo(int codigo){
        String sql = "select * from cliente where codigo = " + codigo +";";
        return this.buscaCliente(sql);
     }            

     private Cliente buscaCliente(String sql){
        try{
            ConexaoDB con = new ConexaoDB();
            Cliente cliente = new Cliente();
            
            ResultSet rs = con.executaQuery(sql);
            
            if(rs.next()){
                cliente.setNome(rs.getString("nome"));
                cliente.setEndereco(rs.getString("endereco"));
                cliente.setBairro(rs.getString("bairro"));
                cliente.setNumero(rs.getString("numero"));
                cliente.setComplemento(rs.getString("complemento"));
                cliente.setTelefone(rs.getString("telefone"));
                cliente.setCodigo(rs.getInt("codigo"));
                return cliente;
            }
            else{
                return null;
            }
        } catch (SQLException e){
            System.out.println("Exception em buscaCliente()");
            return null;
        }
        
    }
    
    public boolean excluir(int codigo){
        String sql;
        sql = "DELETE from cliente WHERE codigo=" + codigo +";";
        
        ConexaoDB con = new ConexaoDB();
        return con.executaComando(sql);
    
    
    }
    
    public boolean podeExcluir(int codigo) {         
        try {  
            ConexaoDB con = new ConexaoDB();
            ResultSet rs;

            rs = con.executaQuery("SELECT * FROM pedido where codigo_cliente=" + codigo + ";");
            
            rs.last();
            int i = rs.getRow();

            if (i>0) {
                return false;
            }else{  
                return true;
            }
        } catch (Exception e) {  
            e.printStackTrace();  
            return false;  
        }  
    }
    
    
    }
    
    
    
    
    
    


